import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
import org.apache.commons.collections.buffer.CircularFifoBuffer;
import org.apache.commons.collections.comparators.FixedOrderComparator;
import org.apache.commons.collections.list.CursorableLinkedList;
import org.apache.commons.collections.map.LRUMap;
import org.apache.commons.collections.map.MultiValueMap;
import org.apache.commons.collections.set.ListOrderedSet;
import junit.framework.TestCase;
import sketch.ounit.Observer;
import sketch.ounit.Values;
import sketch.specs.annotation.TestSketch;
import sketch.ounit.OUnit;
import junit.framework.TestCase;

public class MainTest extends TestCase {
	@sketch.ounit.OUnit
	void rewriteSize0() {
		MultiValueMap map = new MultiValueMap();
		map.put("A", "AA");
		Observer.observeExpr(map.totalSize());
		map.remove("A");
		map.put("B", "BB");
		Observer.observeExpr(map.totalSize());
		map.remove("B");
		map.put("C", "CC");
		Observer.observeExpr(map.totalSize());
		map.remove("C");
		map.put("D", "D");
		Observer.observeExpr(map.totalSize());
		map.remove("D");
	}

	@sketch.ounit.OUnit
	void rewriteSize1() {
		MultiValueMap map = new MultiValueMap();
		map.put("A", "AA");
		Observer.observeExpr(map.totalSize());
		map.put("B", "BB");
		Observer.observeExpr(map.totalSize());
		map.put("C", "CC");
		Observer.observeExpr(map.totalSize());
		map.put("D", "D");
		Observer.observeExpr(map.totalSize());
	}

	@sketch.ounit.OUnit
	void rewriteSize2() {
		MultiValueMap map = new MultiValueMap();
		map.put("A", "AA");
		Observer.observeExpr(map.size());
		map.remove("A");
		map.put("B", "BB");
		Observer.observeExpr(map.size());
		map.remove("B");
		map.put("C", "CC");
		Observer.observeExpr(map.size());
		map.remove("C");
		map.put("D", "D");
		Observer.observeExpr(map.size());
		map.remove("D");
	}

	@sketch.ounit.OUnit
	void rewriteSize3() {
		MultiValueMap map = new MultiValueMap();
		map.put("A", "AA");
		Observer.observeExpr(map.size());
		map.put("B", "BB");
		Observer.observeExpr(map.size());
		map.put("C", "CC");
		Observer.observeExpr(map.size());
		map.put("D", "D");
		Observer.observeExpr(map.size());
	}
}
